目前主要支持的oauth协议

一、 密码模式

密码模式(password)主要针对自家应用,可信度较高,所以可以使用简便安全共存的模式,操作步骤如下

  1. 调用 http://localhost/blade-auth/oauth/token 传入对应的参数
  • 请求头:
    Tenant-Id:000000(替换为对应的租户id)
    Authorization : Basic c3dvcmQ6c3dvcmRfc2VjcmV0 ("c3dvcmQ6c3dvcmRfc2VjcmV0"为clientId:clientSecret串转换为的base64编码,需要和blade_client表的对应字段相匹配)

  • 表单:
    grant_typepassword
    scopeall
    usernameadmin
    password21232f297a57a5a743894a0e4a801fc3

  • 注意:其中的swordsword_secret分别是blade_clientclient_idclient_secret字段值,请一一对应。

  • 注意:框架对密码进行了二次加密,由前端调用传参需要现将原密码进行md5加密后再进行传递,原密码是admin,所以md5加密后是21232f297a57a5a743894a0e4a801fc3,具体如下

  1. 若想避免填写错误,快速导入参数,可以参考这个帖子:https://sns.bladex.vip/article-14982.html

调用认证接口返回结果




二、刷新token

刷新token(refresh_token)存在时间会比access_token更长,主要用于access_token快过期的时候,调用oauth接口获取到刷新后的token以达到token续期的目的

  1. 调用 http://localhost/blade-auth/oauth/token 传入对应的参数
  • 请求头:
    Tenant-Id:000000(替换为对应的租户id)
    Authorization : Basic c3dvcmQ6c3dvcmRfc2VjcmV0 ("c3dvcmQ6c3dvcmRfc2VjcmV0"为clientId:clientSecret串转换为的base64编码)

  • 表单:
    grant_typerefresh_token
    scopeall
    refresh_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXN0IjoidGVzdCIsInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsiYWxsIl0sImV4cCI6MTU1MzE2MTA5NSwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjE0YmMyYjAyLTgxY2UtNDFiNC04ZTI3LTA5YWE0ZmU4ZWMwYyIsImNsaWVudF9pZCI6ImJsYWRlIn0.jTmioQDq-fSNNn7YCwl3wP0JE-etSWtzLDe545mDbP4

三、 授权码模式

授权码模式(authorization_code)主要针对第三方应用,是最为复杂也最为安全的一种模式,操作步骤如下

  1. 打开浏览器访问如下地址:http://localhost:8100/oauth/authorize?tenant_id=000000&client_id=sword&redirect_uri=http://localhost:8888&code=233333&response_type=code
  2. 输入用户名为admin,密码为md5(admin)也就是上文提到的21232f297a57a5a743894a0e4a801fc3
  3. 点击Authorize按钮,通过授权
  4. 系统自动跳转至http://localhost:8888并加上了code参数
  5. 获取跳转后的code值(http://localhost:8888/?code=VhYNLR)之后,调用 http://localhost/blade-auth/oauth/token 传入对应的参数
  • 请求头:
    Tenant-Id:000000(替换为对应的租户id)
    Authorization : Basic c3dvcmQ6c3dvcmRfc2VjcmV0 ("c3dvcmQ6c3dvcmRfc2VjcmV0"为clientId:clientSecret串转换为的base64编码,需要和blade_client表的对应字段相匹配)
  • 表单:
    grant_typeauthorization_code
    scopeall
    codeVhYNLR
    redirect_urihttp://localhost:8888
  • 注意:
    其中的swordsword_secret分别是blade_clientclient_idclient_secret字段值,请一一对应。
    其中的http://localhost:8888blade_client表的web_server_redirect_uri字段值,也请一一对应。

四、获取到token后如何获取用户信息

  1. 拼接请求头
    Authorization :bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZXN0IjoidGVzdCIsInVzZXJfbmFtZSI6ImFkbWluIiwic2NvcGUiOlsiYWxsIl0sImV4cCI6MTU1MzE2MTA5NSwiYXV0aG9yaXRpZXMiOlsiUk9MRV9VU0VSIl0sImp0aSI6IjE0YmMyYjAyLTgxY2UtNDFiNC04ZTI3LTA5YWE0ZmU4ZWMwYyIsImNsaWVudF9pZCI6ImJsYWRlIn0.jTmioQDq-fSNNn7YCwl3wP0JE-etSWtzLDe545mDbP4
  2. 调用 http://localhost/blade-auth/oauth/user-info 既可获得对应用户信息